package com.zhuzhiguang;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 
 * @author 45466
 *    字符串的工具类
 *  
 */
public class StringUtil {
	
	private static Pattern pattern;

	/**
	* 功能：检查包含空白字符在内的字符系列长度
	* 示例：
	* StringUtil.hasLength(null) -> false
	* StringUtil.hasLength("") -> false
	* StringUtil.hasLength(" ") -> true
	* StringUtil.hasLength("Hello") -> true
	*/
	public static boolean hasLength(String src){
	    //TODO 实现代码
		if(src==null)
			return false;
		if(src.length()==0)
			return false;
		return true;
	}
	


	
	/**
	* 功能：检查包含空白字符在内的字符系列长度，并处理过滤前后空格
	* 示例：
	* StringUtil.hasText(null) -> false
	* StringUtil.hasText("") -> false
	* StringUtil.hasText(" ") -> false
	* StringUtil.hasText("Hello") -> true
	*/
	public static boolean hasText(String src){
	    //TODO 实现代码
		if(src==null || src.trim().length()==0  )
			return false;
		return true;
	}
	
	/**
	* 功能：验证是否为合格邮箱
	* 示例：
	* StringUtil.isEmail(null) -> false
	* StringUtil.isEmail("") -> false
	* StringUtil.isEmail("zhangjihao@") -> false
	* StringUtil.isEmail("zhangjihao@sohu") -> false
	* StringUtil.isEmail("zhangjihao@sohu.com") -> true
	*/
	public static boolean isEmail(String email){

		if(email==null)
			return false;
		//TODO 实现代码
		String reg="^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
		//编译正则表达式
		pattern = Pattern.compile(reg);
		//进行匹配
		Matcher matcher = pattern.matcher(email);
		return matcher.matches();
		
	}
	
	/**
	* 功能：验证是否为合格手机号
	* 示例：
	* StringUtil.isPhone(null) -> false
	* StringUtil.isPhone("") -> false
	* StringUtil.isPhone("14312039428") -> false
	* StringUtil.isPhone("13900139000") -> true
	*/
	public static boolean isPhone(String src){
	    //TODO 实现代码

		if(src==null)
			return false;
		//TODO 实现代码
		String reg="^(((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[6])|(17[0135678])|(18[0-9])|(19[89]))\\d{8})$";
		//编译正则表达式
		pattern = Pattern.compile(reg);
		//进行匹配
		Matcher matcher = pattern.matcher(src);
		return matcher.matches();
	}
	
	/**
	* 功能：判断是否全部为字母
	* 示例：
	* StringUtil.isLetter(null) -> false
	* StringUtil.isLetter("") -> false
	* StringUtil.isLetter(".com") -> false
	* StringUtil.isLetter("howSun") -> true
	*/
	public static boolean isLetter(String src){
		if(null==src || src.trim().length()==0)
			return false;
		
	    //TODO 实现代码
		char[] array = src.toCharArray();
//		('a' 'z' )  ('A' 'Z')
		for (char c : array) {
			if( !((c>='a' && c<='z') || (c>='A' && c<='Z')) ) {
				return false;
			}
		}
		//
		return true;
		
		
	}
	
	/**
	* 功能：反转字符串
	* 示例："abcd" → "dcba"
	*
	* 参数1：src，源字符串
	* 返回值：反转的字符串
	*/
	public static String reverse(String src){
		if(src==null)
			return null;
		
	    //TODO 实现代码
		char[] array = src.toCharArray();
		StringBuffer sb = new StringBuffer();  //StringBuilder
		// String s = new String();
		for (int i = array.length-1; i >= 0; i--) {
			sb.append(array[i]);
			//s = s + array[i];
		}
		return sb.toString();
		
		
	}
	
	/**
	* 功能：隐藏字符串
	* 示例：StringUtil.hidden("13856237928", 3,7) -> "138****7928"
	* 参数1：src，源字符串
	* 参数2：start，从开始的位置隐藏，如果为空，则全部不隐藏，
	* 参数3：end，结束位置，如果为空或为-1，则直到末尾都隐藏，如果超过源字符串长度，则只到末尾
	* 返回值：隐藏结果
	*/
	public static String hidden(String src, Integer start, Integer end){
	    //TODO 实现代码
		char[] array = src.toCharArray();
		for (int i = start; i < end; i++) {
			array[i]='*';
		}
		
		return new String(array);
		
	}


}
